package com.ruoyi.iot.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {


    // 端口号，动态从数据库中获取
    private int port;

    public TcpServer(int port) {
        this.port = port;
    }

    public void start() {
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("TCP 监听端口 " + port + " 已启动，等待设备连接...");

            // 等待设备连接
            while (true) {
                try (Socket socket = serverSocket.accept()) {
                    System.out.println("设备连接： " + socket.getInetAddress());
                    BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                    // 获取设备发送的数据
                    String data = reader.readLine();
                    System.out.println("接收到设备数据：" + data);

                    // 根据产品解析规则解析数据
                    parseDeviceData(data, port);
                } catch (IOException e) {
                    System.err.println("设备连接错误: " + e.getMessage());
                }
            }
        } catch (IOException e) {
            System.err.println("无法启动监听端口：" + e.getMessage());
        }
    }

    // 假设我们从产品配置中获取解析规则，解析设备数据
    private void parseDeviceData(String data, int port) {
        // 这里我们可以根据具体的产品解析规则进行数据解析

        // 例如，解析电量、电压等
        System.out.println("解析设备数据: " + data);
    }
}